Computers possess the ability to perform many calculations very quickly. Most single-processor computers are capable of performing only one calculation at a time. Thus, early programming and programming languages defined sequential steps that control the procedure of a desired task. The types of computer languages that were developed to implement these sequential processes are called procedural languages, such as C/C++, FORTRAN, and the like. In such procedural languages, the control of the computer processing is explicitly controlled.
As Internet technology has grown, a greater emphasis began to be placed on the visual aspects of the computer interface. Commensurate with this change in outlook, programming languages were developed that were more concerned with defining the final appearance of the computer interface. In these languages, such as Extensible Markup Language (XML), Hypertext Markup Language (HTML), and the like, control of the computer processing is much more implicit. The appearance of a Web page, being rendered in a large visual canvas, may be created using a more asynchronous approach. A general order of execution is provided that executes the various steps in populating the Web page. Because of its visual emphasis, this implicit flow control paradigm is more common in Web-related programming.
The explicit flow control paradigm is also commonly used in the development of speech-related applications, such as those running on Interactive Voice Response (IVR) units and the like. Because the flow of a speech application is typically driven by caller responses, explicit flow control has become the logical programming solution in historical IVR and speech-related application development.
Over the last 10 years, the reach and capabilities of the Internet has steadily advanced. As Internet technology begins to reach the capabilities to handle typical voice-related applications, a merging has begun to occur between the Internet/World Wide Web and speech application technology, formerly reserved for dedicated UVR units and servers. The beginnings of this merge, however, has resulted in application development environments (ADEs) from Web-centered software companies that utilize implicit flow control to code voice or speech applications that have historically been programmed using explicit controls flow. While this implicit flow paradigm lends itself to the declarative-language, Web-related world, it can be problematic when used in the speech application world.
Using implicit flow control ADEs, speech applications result in disjointed and programmatically complex logic that is used to create applications with somewhat rigid flow execution. One example of such an implicit flow control ADE is Microsoft Corporation's SPEECH.NET™. SPEECH.NET™ is a development kit that may be added onto Microsoft Corporation's VISUALSTUDIO.NET™ ADE. By adding the SPEECH.NET™ library to VISUALSTUDIO.NET™, speech applications may be developed for Web-based speech applications run by speech servers, such as Microsoft Corporation's MICROSOFT SPEECH SERVER™.
Speech applications that are developed using SPEECH.NET™ typically result in complex, large programs that contain numerous, seemingly unrelated functions that are spread out through the code. Additionally, record of the speech prompts used in executing the speech application are also scattered through the code at various locations. This type of application may be suited for the implicit flow control of general Web development and Web design, but creates difficulties for speech developers to efficiently develop and maintain speech applications.
These problems do not just arise in speech application technology. Other Web-based programming technologies may result in such disjointed and programmatically complex application because an implicit flow control paradigm is used to create the underlying application code.